<?php

namespace Modules\Admin\Http\Controllers;

use App\Admin;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\AddAdminUserRequest;
use Spatie\Permission\Models\Role;

class AdminUserController extends Controller
{
    /**
     * 默认为资源控制器，以实现用户的增删改查
     *
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        $admins = Admin::where('name','!=','admin')->paginate(5);
        return view('admin::adminuser.index',compact('admins'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(AddAdminUserRequest $request)
    {

        $res = $request->all();
//        dd($res);
        $res['password'] = bcrypt($res['password']);
//        dd($res['password']);
        Admin::create($res);
        session()->flash("success","恭喜添加成功");
        return redirect()->route('adminuser.index');

    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(AddAdminUserRequest $request,$id)
    {

//        dd($request->all());
//        能进来就可以进行编辑操作
//        所以首先汗是进行编辑验证，验证规则：不能和自己相比较，不能和自己所在的列重复
//        验证规则完毕，下面进行用户列表的更新,都是规律，表单提交时候先验证
//        dd(111);
//        这么简单的逻辑怎么就反应不过来呢



//        dd($request->input('password'));
        $admin= Admin::find($id);
        $admin->name = $request->input('name');
        $admin->nickname = $request->input('nickname');
        if ($request->input('password')) {
            $admin->password = bcrypt($request->input('password'));
        }
//        dd($res->toArray());
//        千万别忘记保存
        $admin->save();
        session()->flash('success','信息修改成功，请记得密码呦');
        return redirect()->route('adminuser.index');
//        编辑写好，写删除
    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {



//        dd(111);实验确实可以进来
        Admin::destroy($id);
        session()->flash('success','删除成功，请记得删除的数据');
//        删除成功，下一步：再添加一个角色列表
        return back();
    }


    public function showrole($id){
//        这个$id获得的其实就是地址栏的参数嘛
//        dd($id);



        if($id==1){
            session()->flash('danger','你没有操作权限！');
            return back();
        }
//        获得对应的id，给用户分配对应的角色
//        你现在是在用户资源控制器当中，所以就应该获得对应角色表的数据
//        dd($id);
        $user = Admin::find($id);
//        dd($user->toArray());

//        获得角色表里边的所有数据
        $role = Role::where('name','!=',config('hd_module.webmaster'))->get();
//        dd(count($role->toArray()));

//        把变量分配到前台，用于循环使用
        return view('admin::adminuser.showrole',compact('user','role','id'));
    }

//    配置分配角色的对应方法
    public function userrole(Request $request,$id){
//        dd($request->toArray());
        if (!$request->input('name')){
            session()->flash('danger','请至少分配一个角色！！！！');
            return back();
        }


//        dd($request->all());
//        dd($id);
//        可以跳进来
//        给用户同步到所有角色,使用syncRoles方法
        $user  = Admin::find($id);
//        dd($user->toArray());
//        给用户同步到所有角色
//        dd($request->input('name'));
        $user->syncRoles($request->input('name'));


        session()->flash('success','恭喜分配角色成功，请注意查收');
        return back();
//        下一步，判断用户有没有此角色，默认选中
//        默认选中写好，下一步，中间件
    }
}
